<?php

/**
 * Cette classe permet de g�rer les projets
 */
class Projet {
	
  /**
   * L'identifiant du projet
   * @var int $id
   */
  private $id;
  
  /**
   * Le nom du projet
   */
  private $nom;

  /**
   * La description g�n�rale de l'�v�nement
   */
  private $description;

  /**
   * Le thème du projet
   */
  private $theme;
  
  /**
   * Les evenemnets du projet :
   */
  private $evenements = array();
  
  /**
   * Le nombre d'évènments liés au projet :
   */
  private $nbEvents;
  
  /**
   * Le constructeur de la fonction
   * @var int l'id du projet, si rien n'est mis bah on crée un projet vide :
   * @var boolean $listEvents détermine si l'on doit lister les évènements ou non ?
   */
  public function __construct($id_projet = null, $listEvents = false) {
  	global $db, $erreurs;

  	if(is_int($id_projet) && $id_projet != null) {
  		//if($user->data['DMI_STAFF'])
  		{
  			$select = "SELECT
  							id_projet
  							, nom_projet
  							, description_projet
  							, theme
  						FROM
  							" . CALENDRIER_PROJET_TABLE . "
  						WHERE
  							id_projet = '".(int) $id_projet."'";
  			$result = $db->sql_query($select);
  			$data = $db->sql_fetchrow($result);
  			
  			//On affecte les attributs :
  			$this->id = $data['id_projet'];
  			$this->nom = $data['nom_projet'];
  			$this->description = $data['description_projet'];
  			$this->theme = new Categorie($data['theme']);
  			
  			$db->sql_freeresult($result);

  			if($listEvents == true) {
	  			//On cherche les évènements liés au projet :
	  			$events = "SELECT
	  							id_evenement
	  						FROM
	  							" . CALENDRIER_EVENEMENT_TABLE . " e
	  						WHERE
	  							e.projet = '".$this->id."'
	  						ORDER BY
	  							e.date_debut";
	  			$result = $db->sql_query($events);
	  			while($event = $db->sql_fetchrow($result)) {
	  				$tmpEvent = new Evenement($event['id_evenement']);
	  				$this->evenements[] = $tmpEvent;
	  			}
	  			$db->sql_freeresult($result);
	  			
	  			$this->nbEvents = count($this->evenements);
  			} else {
  				//On se contente de regarder combien d'events sont liés au projet :
  				$nbEvents = "SELECT
  								COUNT(*) as nb
  							FROM
  								" . CALENDRIER_EVENEMENT_TABLE . "
  							WHERE
  								projet = '".$this->id."'";
  				$result = $db->sql_query($nbEvents);
  				$data = $db->sql_fetchrow($result);
  				$this->nbEvents = $data['nb'];
  				$db->sql_freeresult($result);
  			}
  		}
  	}
  	else
  		$erreurs[] = 'L\'identifiant est soit nul, ou n\'est pas un entier, nous ne pouvons pas trouver de projet correspondant';
  }
  
  /**
   * Cette fonction affiche le calendrier du projet dans le template phpBB3
   */
  public function voir_calendrier()
  {
  }

  /**
   * Cette m�thode eprmet de voir le gantt du projet dans le template phpBB3
   */
  public function voir_gantt()
  {
  }

  /**
   * Cette fonction permet d'afficher une présentation du projet dans le template
   * @var boolean $boucle permet de déterminer si on est dans une boucle ou non, par défaut à false
   * @var boolean $afficheEvent si jamais c'est true, alors on affiche les evenements aussi, par défaut à false
   */
  public function voir_presentation($boucle = false, $afficheEvent = false)
  {
  	global $db, $template;
  	
  	$infos = array(
  				'PROJET_ID' 			=> $this->id,
  				'PROJET_NOM'			=> $this->nom,
  				'PROJET_DESCRIPTION'	=> $this->description,
  				'PROJET_THEME_ID'		=> $this->theme->getId(),
  				'PROJET_THEME_NOM'		=> $this->theme->getTitre(),
  				'PROJET_THEME_COLOR'	=> $this->theme->getColor(),
  				'PROJET_THEME_LOGO'		=> $this->theme->getLogo(),
  				'PROJET_NB_EVENTS'		=> count($this->evenements),
  				'PROJET_LINK_EDIT'		=> append_sid('index.php?i=calendrier&mode=edit_projet&project='.$this->id),
  				'PROJET_LINK_DELETE'	=> append_sid('index.php?i=calendrier&action=delete_projet&projet='.$this->id),
  			);

  	if($boucle == true) {
  		//On affiche le projet
  		$template->assign_block_vars('projet', $infos);
  		
  		if($afficheEvent == true) {
	  		//Et on fait afficher chaque event
	  		foreach ($this->evenements as $tmpEvent) {
	  			$tmpEvent->voir_presentation(true, 'projet');
	  		}
  		}
  	} else {
  		$template->assign_vars($infos);
  		
  	if($afficheEvent == true) {
	  		//Et on fait afficher chaque event
	  		foreach ($this->evenements as $tmpEvent) {
	  			$tmpEvent->voir_presentation();
	  		}
  		}
  	}
  }

  /**
   * Affiche le calendrier du projet sous forme de bbcode
   */
  public function voir_bbcode_calendrier()
  {
  }

  /**
   * Affiche le gantt du calendrier sous forme de bbcode
   */
  public function voir_bbcode_gantt()
  {
  }

  /**
   * Cette classe permet bien évidemment de créer un projet.
   */
  public function creer_projet($nom, $description, $theme)
  {
  	global $db;
  	
  	//if($user->data['DMI_STAFF'])
  	{
  		$insert = "INSERT INTO
  						" . CALENDRIER_PROJET_TABLE . "
  						(
  							nom_projet
  							, description_projet
  							, theme
  						)
  					VALUES
  						(
  							'".$db->sql_escape($nom)."'
  							, '".$db->sql_escape($description)."'
  							, '".(int) $theme."'
  						)";
  		$db->sql_query($insert);
  		
  		//On vérifie qu'on a bien modifié des éléments :
  		$affected_rows = $db->sql_affectedrows();
  		if($affected_rows > 0)
  			$infos[] = 'Votre projet a bien &eacute;t&eacute; ajout&eacute;.';
  		else
  			$erreurs[] = 'Le projet n\'a pas pu &ecirc;tre ajout&eacute;, signalez le &agrave; un admin.';
  		
  		//Et on affecte les attributs :
  		$this->id = $db->sql_nextid();
  		$this->nom = $nom;
  		$this->description = $description;
  		$this->theme = new Categorie($theme);
  	}
  	//else
  		//$erreurs[] = 'Vous n\'avez pas les droits pour cr&eacute;er un projet.';
  }
  
 /**
   * Cette fonction permet évidemment d'éditer un projet.
   * Les droits de l'utilisateur sont vérifiés avant, il faut faire partie de DMI_STAFF pour cela
   * @param string $nom_projet
   * @param string $description
   * @param int theme
   * @param int projet
   */
  public function editer_projet($nom_projet, $description, $theme)
  {
  	global $db, $user, $erreurs, $infos;
  	
  	//Vérifions les droits de l'utilisateur
  	//if($user->data['DMI_STAFF'])
  	{
  		$update = "UPDATE
  						" . CALENDRIER_PROJET_TABLE . "
  					SET
  						nom_projet = '".$db->sql_escape($nom_projet)."'
  						, description_projet = '".$db->sql_escape($description)."'
  						, theme = '".(int) $theme."'
  					WHERE
  						id_projet = '".(int) $this->id."'";
  		$db->sql_query($update);
  		
  		//On vérifie qu'on a bien modifié des éléments :
  		$affected_rows = $db->sql_affectedrows();
  		if($affected_rows > 0)
  			$infos[] = 'Votre projet a bien &eacute;t&eacute; modif&eacute;';
  		else
  			$erreurs[] = 'Le projet n\'a pas pu &ecirc;tre modifi&eacute;, signalez le &agrave; un admin';
  		
  		//On affecte les attributs
	  	$this->nom = $nom_projet;
	  	$this->description = $description;
	  	$this->theme = new Categorie($theme);
  	}
  //	else
  			//$erreurs[] = 'Vous n\'avez pas les droits pour ajouter un &eacute;v&egrave;nement au calendrier.';
  }

  /**
   * Ceci supprimera le projet de la bdd.
   */
  public function supprimer_projet()
  {
  	global $user, $db;
  	
  	//if($user->data['DMI_STAFF'])
  	{
  		$delete = "DELETE FROM
  						" . CALENDRIER_PROJET_TABLE . "
  					WHERE
  						id_projet = '".$this->id."'";
  		$db->sql_query($delete);
  	}
  	//else
  		//$erreurs[] = 'Vous n\'avez pas les droits pour supprimer un projet.';
  }
  
  /**
   * Cet accesseur retourne l'id du projet, tout simplement
   */
  public function getId() {
  	return $this->id;
  }
  
   /**
   * Cet accesseur retourne le nom du projet, tout simplement
   */
  public function getNom() {
  	return $this->nom;
  }
}
?>
